"""
2017年3月7日 星期二
版本：  V3.5.1
python sys 包应用实践
"""
import sys
import json
import os
import platform as pf
import socket as sk
from ctypes import *

_basedir = os.path.dirname(__file__)

def saveTest(filename,content):
    f =open(filename,'w')
    f.write(content)
    f.close()
# 系统包调用
class pkgSys():
    def __init__(self):
        data = {
            'os' : self.osPkgVar(),
            'sys': self.varPrinter(),
            'platform': self.platformPkgVars(),
            'sokect':self.sokectPkgVars()
        }
        # print(data)
        saveTest('./runtime/pkg_sys.json', json.dumps(data))
        os.system(_basedir + '/runtime/pkg_sys.json')
    # os 包
    def osPkgVar(self):
        data = {
            'name':os.name,
            'cwd':os.getcwd(),
            'login':os.getlogin(),
            'pid':os.getpid(),
            'ppid':os.getppid()
            # 'environ':os.environ
        }
        print(os.environ)
        return data
    # platform 包
    def platformPkgVars(self):
        data = {
            'machine': pf.machine(),
            'node':pf.node(),
            'processor':pf.processor(),
            'platform':pf.platform(),
            'python_build':pf.python_build(),
            'python_compiler':pf.python_compiler(),
            'python_branch':pf.python_branch(),
            'python_implementation':pf.python_implementation(),
            'python_revision':pf.python_revision(),
            'python_version': pf.python_version(),
            'release':pf.release(),
            'system':pf.system(),
            'version':pf.version(),
            'uname':pf.uname(),
            'win32_ver':pf.win32_ver()
        }
        return  data
    # sokect 基本常量
    def sokectPkgVars(self):
        name = sk.gethostname()
        ip = sk.gethostbyname(name)
        data = {
            'gethostname': name,
            'gethostbyname':ip,
            'gethostbyaddr':sk.gethostbyaddr(ip),
            'gethostbyaddr2': sk.gethostbyaddr(name),
        }
        return data
    # 包常量应用
    def varPrinter(self):
        # print(sys.abiflags)
        data = {
            'base_exec_prefix':sys.base_exec_prefix,
            'base_prefix':sys.base_prefix,
            'byteorder':sys.byteorder,
            'builtin_module_names':sys.builtin_module_names,
            'copyright':sys.copyright,
            'dllhandle':sys.dllhandle,
            'exec_prefix':sys.exec_prefix,
            'executable':sys.executable,
            'platform':sys.platform,
            'argv': sys.argv
        }
        return data

        # print(data)
        # saveTest('./runtime/pkg_sys.json',json.dumps(data))
        # os.system(_basedir + '/runtime/pkg_sys.json')
        # opt = os.system('D:\\Joshua\\Active\\Python\\pystart\\runtime\\pkg_sys.json')
        # print(opt)

def test(args=None):
    if args == None:
        print("没有值")
    else:
        print(args)
# 调用 dll 文件
def callDLLTest():
    dllname = _basedir+'/cpystart/bin/Release/pystart.dll'
    # dll = ctypes.LibraryLoader(dllname)
    dll = cdll.LoadLibrary(dllname)
    print(dll.SomeFunction())
    print(dll.add(1000,85588))
    print(str(dll.getName()),dll.getName(),'返回的string无效')
    print(dll.getVersion(),'返回的string无效')

# pkgSys()
# test()
callDLLTest()